package Collections;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

/*
 * Collection和Collections又什么区别？
 * 面试题：
 * 		Collection是集合体系的最顶层，包含了集合体系的共性
 * 		Collections是一个工具类，方法都是用于操作Collection
 */
public class ColllectionsDemo {
	 //static int binarySearch(List list, Object key)：使用二分查找法查找指定元素在指定列表的索引位置
	public static void main(String[] args) {
//		method1();
		
//		method2();
		
//		method3();
		
//		method4();
		 
//		method5();
		
//		method6();
		
		
		
	}

	private static void method6() {
		//static <T extends Comparable<? super T>> void sort(List<T> list):根据元素的自然顺序 对指定列表按升序进行排序。  
		List<Integer> list = new ArrayList<Integer>();
		list.add(1);
		list.add(4);
		list.add(2);
		list.add(3);
		Collections.sort(list);
		System.out.println(list);
	}

	private static void method5() {
		//static void shuffle(List<?> list, Random rnd):使用指定的随机源对指定列表进行置换。
		List<Integer> list = new ArrayList<Integer>();
		list.add(1);
		list.add(2);
		list.add(3);
		list.add(4);
		Collections.shuffle(list);
		System.out.println(list);
	}

	private static void method4() {
		//static void reverse(List<?> list):反转指定列表中元素的顺序。
		List<String> list = new ArrayList<String>();
		list.add("hello");
		list.add("world");
		list.add("java");
		
		Collections.reverse(list);
		System.out.println(list);
	}

	private static void method3() {
		//static <T> void fill(List<? super T> list, T obj):使用指定元素替换指定列表中的所有元素。 
		List<String> list = new ArrayList<String>();
		list.add("hello");
		list.add("world");
		list.add("java");
		System.out.println(list);
		
		Collections.fill(list, "android");
		System.out.println(list);
	}

	private static void method2() {
		//static void copy(List dest,list src) :将所有元素从一个列表复制到另一个列表。
		//目标列表的长度至少等于源列表的长度
		List<String> src = new ArrayList<String>();
		src.add("hello");
		src.add("world");
		src.add("java");
		
		//创建新列表
		List<String> dest = new ArrayList<String>();
		dest.add("");
		dest.add("");
		dest.add("");
		Collections.copy(dest, src);
		System.out.println(dest);
	}

	private static void method1() {
		List<Integer> l = new ArrayList<Integer>();
		l.add(1);
		l.add(2);
		l.add(3);
		l.add(4);
		
		int index = Collections.binarySearch(l, 3);
		System.out.println(index);
	}
}
